const fp = require('lodash/fp');

// 代码题1
// 数据
// horsepower 马力，dollar_value 价格 in_stock 库存

const cars = [{
  name: 'Ferrari FF',
  horsepower: 660,
  dollar_value: 700000,
  in_stock: true,
}, {
  name: 'Spyker C12 Zagato',
  horsepower: 650,
  dollar_value: 648000,
  in_stock: false,
}, {
  name: 'Jaguar XKR-S',
  horsepower: 550,
  dollar_value: 132000,
  in_stock: false,
}, {
  name: 'Audi R8',
  horsepower: 525,
  dollar_value: 114200,
  in_stock: false,
}, {
  name: 'Aston Martin One-77',
  horsepower: 750,
  dollar_value: 1850000,
  in_stock: true,
}, {
  name: 'Pagani Huayra',
  horsepower: 700,
  dollar_value: 1300000,
  in_stock: false,
}];

// 练习1
const isLastInStock = fp.flowRight(fp.prop('in_stock'), fp.last);
console.log(isLastInStock(cars)); // false

// 练习2
const getFirstCarName = fp.flowRight(fp.prop('name'), fp.first);
console.log(getFirstCarName(cars));

// 练习3
const _average = xs => fp.reduce(fp.add, 0, xs) / xs.length;
const averageDollarValue = fp.flowRight(_average, fp.map(c => c.dollar_value));
console.log(averageDollarValue(cars)); // 790700

// 练习4
const _underscore = fp.replace(/\W+/g, '_');
const names = ['Hello World', 'What Is This'];
const sanitizeNames = fp.map(fp.flowRight(_underscore, fp.lowerCase));
console.log(sanitizeNames(names)); // [ 'hello_world', 'what_is_this' ]